笔记分享|浙大暑期密码学课程:通用可组合性(1)
上篇笔记是对于可证明安全基础课程的整理,详情请见笔记分享|浙大暑期密码学课程:可证明安全基础和笔记分享|浙大暑期密码学课程:两方安全计算。
本篇笔记对Hong-Sheng Zhou老师在浙江大学的暑期Crypto School的《浙大Universal Composability Ⅰ( 上)》课程进行了整理,可前往以下b站链接或点击下列视频观看完整课程。
浙大暑期Crypto课程-Universal Composability Ⅰ( 上)
https://www.bilibili.com/video/BV1Kh4y1M76r/?spm_id_from=333.337.search-card.all.click&vd_source=15b7926a3a203446fa868f18be9bc87e
前言
关于更多和UC安全有关的知识,可以参见下述论文。
可证明安全
一个最直观的方法应该如下所示,首先先构建一个协议,随后尝试攻击这个协议,通过漏洞来修复这个协议,随后重复执行,不断往复,直至找不到漏洞为止。但通常这种方案是不可行的,因为安全性没有得到有效的证明。
那可证明安全就是一种证明安全性最好的方法。一般安全性证明分为四个步骤,第一步先确定安全目标,第二部选择合适的技术栈,第三步通过这个技术栈来构建协议或方案,最后一步对方案进行规约,即将协议或方案对安全性规约到相关原语的安全性。
首先我们先确定安全目标,对于一般的密码协议而言,我们不清楚协议相关的性质是否可以被充分定义,因为有一些攻击无法在协议层面来进行。
安全性证明主要有两种,一个是基于属性的,即博弈论的方式来证明安全性,另一种是基于模拟的。基于属性的一般在加密方案和零知识证明中常用,如加密方案中的CPA,CCA安全,零知识证明中的completeness, soundness和zero-knowledge。
交互式协议及其安全性
安全计算允许多个参与方在不透露自己输入的情况下完成特定函数的计算,参与方希望能够有一些安全保证,比如隐私性和正确性,不论参与方或外来的参与方干何种坏事,我们都希望安全性能够在协议中得到充分保证。
安全性的定义主要有以下指标,包括敌手的攻击能力(bounded or unbounded),网络环境(同步,异步,可信第三方辅助等)和安全保证,这些都需要被完整定义。
如果安全性定义不清晰,那么该安全性证明必定是不标准的,而且也不清楚这类协议可以抵抗怎么样的敌手和怎么样类型的攻击,自然方案也就默认不安全。
基于属性(game-based)和基于模拟(simulation-based)安全性定义
那我们可以采用基于属性的方式来定义安全性,这显然在竞标场景中是使用的,但如果在投票场景中,我们可能不仅仅只保证隐私性和正确性了。对于特定协议,我们也不清楚定义的属性是否能够完全满足,因为这个属性的列表有可能非常长。
第二种方式是基于模拟的,我们也称之为现实世界和理想世界的不可区分性,即实际协议执行过程中的任何攻击,都能在理想世界找到一个模拟器进行模拟。通过这种方式可以将现实世界的协议规约到理想世界,实现了两者的不可区分。一般密码协议都是基于此来进行安全性证明。
下次我们将继续整理通用可组合性的课程,请大家持续关注!
(PS:笔记里是作者自己整理,可能会有一些不太准确的表达,也会有一些不当的理解,欢迎大家在留言区指出,一起学习交流)
往期推荐
1文章速览 | 联邦学习 x CVPR'2023 (上)
2.课程报名丨山东大学网络空间安全学院隐私计算讲习暑期课程笔记分享|浙大暑期密码学课程:两方安全计算4.笔记分享|浙大暑期密码学课程:可证明安全基础